3.1. 변수와 가변성
가변성
변수는 기본적으로 불변(immutable)하다.
이를 통해 안정성과 쉬운 동시성이 제공될 수 있는 것이다.
이처럼 그냥 선언하면 기본적으로 컴파일이 불가능하다.
가변성이 유용한 경우가 있을 수도 있다.
그 경우에는 mut 키워드를 붙여준다.
상수
상수는 불변 변수와 비슷하지만 조금 다르다.
어떤 이름에 묶인 값으로 바꾸는 것이 절대 허용되지 않는다.
mut와는 함께 사용될 수 없다.
let이 사용되지도 않으며 타입이 명시되어야만 한다.
절대 바뀌지 않으면서 전역적으로 사용되는 값에 적합하다.
상수는 대체로 밑줄과 대문자로 표현한다.
섀도잉
변수는 같은 이름으로 다시 선언되는 것이 가능하다.
이전 변수가 완전히 없어지는 것이 아니라, 가려지는 것이라 섀도잉이라 부른다.
이 경우 출력은 12, 6이 나온다.
첫번째에서는 let을 써서 새로 값을 덮어 씌웠다.
이후에는 괄호를 치고 그 안에서 다시 섀도잉했다.
스코프를 벗어나자 해당 값은 유지되지 않았다.
섀도잉은 mut와 다르다.
let을 통해 새로운 변수를 만드는 것이기에 다른 타입의 값이 저장 가능하다.